
package com.crowdfunding.circle.question.entity;

import java.util.Date;

import org.apache.commons.lang3.StringUtils;

import com.crowdfunding.circle.sensitiveword.SensitiveWordUtils;

/**
 * 你问我答实体类
 *
 * @author 朱国军
 * @version 2016年06月26日 朱国军
 */
public class QuestionVO {

    /** 问题ID */
    private String questionId;

    /** 问题编号 */
    private Integer questionNo;

    /** 项目名称 */
    private String projectName;
    
    /** 偷看人数 */
    private Integer peekNum;

    /** 回答人数 */
    private Integer questionUserNum;

    /** 平台名称 */
    private String platformName;

    /** 平台链接 */
    private String platformUrl;

    /** 问题描述 */
    private String questionDetail;

    /** 回答人 */
    private String answerUser;

    /** 回答人昵称 */
    private String answerUserName;

    /** 回答时间 */
    private Date answerTime;

    /** 回答内容 */
    private String answerDetail;

    /** 问题状态:1,待付款，2:待回答,3:已回答，11，问题审核不通过，12，到期未回答 */
    private Integer questionStatus;

    /** 发布人 */
    private String publishUser;

    /** 发布人名称 */
    private String publishUserName;

    /** 创建时间 */
    private Date createTime;

    /** 更新时间 */
    private Date updateTime;

    /** 状态：0默认，1管理员删除，2用户删除 */
    private Integer dataStatus;
    
    /** 购买数量 */
    private Integer buyCount;

    /**
     * 设置问题ID
     *
     * @param questionId 问题ID
     */
    public void setQuestionId(String questionId) {
        this.questionId = questionId;
    }

    /**
     * 获取问题ID
     *
     * @return 问题ID
     */
    public String getQuestionId() {
        return questionId;
    }

    /**
     * 设置问题编号
     *
     * @param questionNo 问题编号
     */
    public void setQuestionNo(Integer questionNo) {
        this.questionNo = questionNo;
    }

    /**
     * 获取问题编号
     *
     * @return 问题编号
     */
    public Integer getQuestionNo() {
        return questionNo;
    }
    
    /**
     * 获取偷看人数
     *
     * @return 偷看人数
     */
    public Integer getPeekNum() {
        return peekNum;
    }
    
    /**
     * 设置 偷看人数
     *
     * @param peekNum 偷看人数
     */
    public void setPeekNum(Integer peekNum) {
        this.peekNum = peekNum;
    }
    
    /**
     * 设置项目名称
     *
     * @param projectName 项目名称
     */
    public void setProjectName(String projectName) {
        this.projectName = projectName;
    }

    /**
     * 获取项目名称
     *
     * @return 项目名称
     */
    public String getProjectName() {
        return projectName;
    }

    /**
     * 设置平台名称
     *
     * @param platformName 平台名称
     */
    public void setPlatformName(String platformName) {
        this.platformName = platformName;
    }

    /**
     * 获取平台名称
     *
     * @return 平台名称
     */
    public String getPlatformName() {
        return platformName;
    }

    /**
     * 设置平台链接
     *
     * @param platformUrl 平台链接
     */
    public void setPlatformUrl(String platformUrl) {
        this.platformUrl = platformUrl;
    }

    /**
     * 获取平台链接
     *
     * @return 平台链接
     */
    public String getPlatformUrl() {
        return platformUrl;
    }

    /**
     * 设置问题描述
     *
     * @param questionDetail 问题描述
     */
    public void setQuestionDetail(String questionDetail) {
        this.questionDetail = questionDetail;
    }

    /**
     * 获取问题描述
     *
     * @return 问题描述
     */
    public String getQuestionDetail() {
        return questionDetail;
    }

    /**
     * 设置回答人
     *
     * @param answerUser 回答人
     */
    public void setAnswerUser(String answerUser) {
        this.answerUser = answerUser;
    }

    /**
     * 获取回答人
     *
     * @return 回答人
     */
    public String getAnswerUser() {
        return answerUser;
    }
    
    /**
     * 获取回答人昵称
     *
     * @return 回答人昵称
     */
    public String getAnswerUserName() {
        return answerUserName;
    }
    
    /**
     * 设置回答人昵称
     *
     * @param answerUserName 回答人昵称
     */
    public void setAnswerUserName(String answerUserName) {
        this.answerUserName = answerUserName;
    }
    
    /**
     * 设置回答时间
     *
     * @param answerTime 回答时间
     */
    public void setAnswerTime(Date answerTime) {
        this.answerTime = answerTime;
    }
    
    /**
     * 获取回答人数
     *
     * @return 回答人数
     */
    public Integer getQuestionUserNum() {
        return questionUserNum;
    }
    
    /**
     * 设置回答人数
     *
     * @param answerNum 回答人数
     */
    public void setQuestionUserNum(Integer questionUserNum) {
        this.questionUserNum = questionUserNum;
    }
    
    /**
     * 获取回答时间
     *
     * @return 回答时间
     */
    public Date getAnswerTime() {
        return answerTime;
    }

    /**
     * 设置回答内容
     *
     * @param answerDetail 回答内容
     */
    public void setAnswerDetail(String answerDetail) {
        this.answerDetail = answerDetail;
    }

    /**
     * 获取回答内容
     *
     * @return 回答内容
     */
    public String getAnswerDetail() {
        return answerDetail;
    }

    /**
     * 设置问题状态:0,提交问题，1:付款成功,2:已回答，11，问题审核不通过，12，到期未回答
     *
     * @param questionStatus 问题状态:0,提交问题，1:付款成功,2:已回答，11，问题审核不通过，12，到期未回答
     */
    public void setQuestionStatus(Integer questionStatus) {
        this.questionStatus = questionStatus;
    }

    /**
     * 获取问题状态:0,提交问题，1:付款成功,2:已回答，11，问题审核不通过，12，到期未回答
     *
     * @return 问题状态:0,提交问题，1:付款成功,2:已回答，11，问题审核不通过，12，到期未回答
     */
    public Integer getQuestionStatus() {
        return questionStatus;
    }

    /**
     * 设置发布人
     *
     * @param publishUser 发布人
     */
    public void setPublishUser(String publishUser) {
        this.publishUser = publishUser;
    }

    /**
     * 获取发布人
     *
     * @return 发布人
     */
    public String getPublishUser() {
        return publishUser;
    }
    
    /**
     * 获取发布人名称
     *
     * @return 发布人名称
     */
    public String getPublishUserName() {
        return publishUserName;
    }
    
    /**
     * 设置 发布人名称
     *
     * @param publishUserName 发布人名称
     */
    public void setPublishUserName(String publishUserName) {
        this.publishUserName = publishUserName;
    }
    
    /**
     * 设置创建时间
     *
     * @param createTime 创建时间
     */
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    /**
     * 获取创建时间
     *
     * @return 创建时间
     */
    public Date getCreateTime() {
        return createTime;
    }

    /**
     * 设置更新时间
     *
     * @param updateTime 更新时间
     */
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    /**
     * 获取更新时间
     *
     * @return 更新时间
     */
    public Date getUpdateTime() {
        return updateTime;
    }

    /**
     * 设置状态：0默认，1管理员删除，2用户删除
     *
     * @param dataStatus 状态：0默认，1管理员删除，2用户删除
     */
    public void setDataStatus(Integer dataStatus) {
        this.dataStatus = dataStatus;
    }

    /**
     * 获取状态：0默认，1管理员删除，2用户删除
     *
     * @return 状态：0默认，1管理员删除，2用户删除
     */
    public Integer getDataStatus() {
        return dataStatus;
    }

    /**
     * 获取购买数量
     *
     * @return 购买数量
     */
    public Integer getBuyCount() {
        return buyCount;
    }
    
    /**
     * 设置购买数量
     *
     * @param buyCount 购买数量
     */
    public void setBuyCount(Integer buyCount) {
        this.buyCount = buyCount;
    }

    /**
     * 检查字段长度是否超长，检查非空字段是否有值
     *
     * @return 检查提示信息，为null时表示检查通过
     */
    public String valid() {
        
        if (StringUtils.isBlank(questionDetail)) {
            return "问题描述不能为空";
        }

        if (StringUtils.isBlank(answerUser)) {
            return "回答人不能为空";
        }

        if (StringUtils.isNotBlank(questionDetail) && questionDetail.length() > 800) {
            return "问题描述值超长，允许输入的最大长度为：800字符";
        }

        if (SensitiveWordUtils.isContaintSensitiveWord(questionDetail, 1)) {
            return "问题描述中包含敏感词汇:" + SensitiveWordUtils.getSensitiveWord(questionDetail, 1) + "，请检查后再保存";
        }

        return null;
    }
}
